from py_page.base_page import BasePage
from time import sleep
from common.log import Logger

logging = Logger(__name__).get_logger()


class MainPage(BasePage):
    file_path = BasePage.get_path("/py_yaml/main_page.yaml")

    # 对页面进行建模 就是在对应的页面类下面去封装对应的方法，这些方法要体现这个页面在业务上实现哪些功能
    # 点击【登录】按钮跳转到登录页面
    def click_login_button(self):
        logging.info("在首页点击【登录】")
        self.run_steps(self.file_path, "click_login_button")
        # 使用 self.file_path 能确保调用时使用的是与当前实例关联的 file_path。这种方式在类中访问类变量时更加清晰
        from py_page.login_page import LoginPage
        return LoginPage(self.driver)  # 从业务角度来看，因为我们点击首页的【登录】实现了页面的跳转，跳转到了登录页面

    # 获取登录的用户名
    def get_login_name(self):
        logging.info("登录成功后获取登录的用户名")
        ele = self.run_steps(self.file_path, "get_login_name")[0]
        logging.info(f"获取到的登录用户名是:{ele.text}")
        return ele.text

    # 移动鼠标到指定的商品上面
    def move_to_goods(self, index):
        logging.info("移动鼠标到元素上")
        self.move_to_ele("xpath", "//*[@class='name line2']", index=index)
        sleep(10)

    # 在首页点击【退出登录】
    def click_logout_button(self):
        logging.info("在首页点击退出登录")
        self.run_steps(self.file_path, "click_logout_button")

    # 进入商品详情
    def goto_goods_detail_page(self, index):
        logging.info(f"在首页进入第{index}个商品详情")
        self.run_steps(self.file_path, "goto_goods_detail_page", index=index)
        sleep(5)
        from py_page.goods_detail_page import GoodsDetailPage
        return GoodsDetailPage(self.driver)

#
#
# if __name__ == '__main__':
#     MainPage().click_login_button()
